package com.tianfei.crowd.mvc.config;

import com.tianfei.crowd.entity.Admin;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.User;

import java.util.List;

/**
 *
 * 用来 封装 Admin对象 和 角色、权限 信息 的类
 *
 * 考虑到 User 对象中 仅仅包含了 账号 和 密码 ，
 * 为了能够获取到原始的 Admin 对象，专门创建这个类对 User 类进行扩展
 *
 *
 * @author: Herz
 * @date: 2021/7/21 14:49
 */

public class SecurityAdmin extends User {

    // 原始的Admin对象，包含Admin的全部属性
    private Admin originalAdmin;


    public SecurityAdmin(

            // 传入的原始Admin对象
            Admin originalAdmin,

            // 创建角色、权限信息的集合
            List<GrantedAuthority> authorities) {

        // 调用父类构造器
        super(originalAdmin.getLoginAcct(),originalAdmin.getUserPwd(),authorities);

        // 给本类的Admin对象赋值
        this.originalAdmin = originalAdmin;

        // 将原始Admin对象中得密码擦除
        this.originalAdmin.setUserPwd(null);
    }


    // 对外提供的获取原始Admin对象的get()方法
    public Admin getOriginalAdmin() {
        return originalAdmin;
    }
}
